#include <stdio.h>
#include <stdlib.h>
typedef  char dataType;
typedef struct BtreeNode {
    dataType data;
    struct BtreeNode *left;
    struct BtreeNode *right;
}BtreeNode,*Btree;

// 后序遍历
void postOrder(Btree T) {
    if (T != NULL) {
        postOrder(T->left);
        postOrder(T->right);
        printf("%c", T->data);
    }
}

BtreeNode *CreateTree(char *str, int *index) {
    // 读取当前字符并递增索引
    char curChar = str[(*index)++];
    if (curChar == '#') {  // 若为'#'（表示空节点），返回NULL
        return NULL;
    }

    // 分配新节点空间
    BtreeNode *newNode = (BtreeNode *)malloc(sizeof(BtreeNode));
    newNode->data = curChar;  // 节点数据为当前字符

    // 递归创建左右子树
    newNode->left = CreateTree(str, index);  // 递归创建左子树
    newNode->right = CreateTree(str, index);  // 递归创建右子树

    return newNode;  // 返回当前节点指针
}

int main() {
    char str[100];  // 定义存储层序遍历字符串的数组
    int Index = 0;  // 定义索引变量，初始值为0
    scanf("%s", str);  // 读取用户输入的层序遍历字符串
    BtreeNode *newNode = CreateTree(str, &Index);
    postOrder(newNode);
    return 0;
}
